// ==UserScript==
// @name         NK验证码识别
// @namespace    your_namespace
// @version      1.0.1
// @description  NK验证码识别自动填写
// @match        *://*/*
// @grant        GM_xmlhttpRequest
// @run-at       document-end
// ==/UserScript==
(function() {
    'use strict';
    const API_URL = 'https://api.nonex.top/captcha/code';

    function init() {

        // 新选择器组合
        const input = document.querySelector('div.el-form-item:nth-child(4) > div:nth-child(1) > div:nth-child(1) > input:nth-child(1)');
        const canvas = document.querySelector('.poi');

        // 添加元素存在性检查
        if (!input || !canvas) {
            console.log('元素未找到，5秒后重试');
            setTimeout(init, 5000); // 5秒后重试
            return;
        }

        // 监听聚焦事件
        input.addEventListener('focus', async function handler() {
            input.removeEventListener('focus', handler);

            try {
                // 处理跨域图像
                const base64Data = canvas.toDataURL('image/jpeg', 0.8).split(',')[1];

                GM_xmlhttpRequest({
                    method: "POST",
                    url: API_URL,
                    headers: {"Content-Type": "application/json"},
                    data: JSON.stringify({ ImageBase64: base64Data }),
                    onload: function(response) {
                    try {
                        const result = JSON.parse(response.responseText);
                        if (result.status === 'success') {
                            // 模拟完整输入事件
                            ['focus', 'input', 'change'].forEach(eventType => {
                                input.value = result.result;
                                input.dispatchEvent(new Event(eventType, {
                                    bubbles: true,
                                    cancelable: true
                                }));
                            });
                        }
                    } catch(e) {
                        console.error('验证码识别失败:', e);
                    }
                }
                });
            } catch(e) {
                console.error('Canvas处理失败:', e);
            }
        });
    }

    // 使用DOM变动观察器
    const observer = new MutationObserver(init);
    observer.observe(document.body, {
        childList: true,
        subtree: true,
        attributes: false
    });

    // 初始执行
    init();
})();